﻿/*************************************************************************************
* 运行库版本：	4.0.30319.18408
* 类  名  称：	Communication
* 命 名 空间：	IOTILMS.Business.Network
* 文  件  名：	Communication
* 创 建 时间：	2014/5/18 21:54:42
* 作      者：	帅红  shuaihong617@qq.com
* 说      明：
* 修 改 时间：
* 修  改  人：
*************************************************************************************/

using FutureTech.ComponentModel;

namespace FutureTech.Network
{
        /// <summary>
        /// 交互
        /// </summary>
        public abstract class Interactive:NotifyPropertyChangedObject
        {
                /// <summary>
                /// 请求方
                /// </summary>
                public AddressContext RequestStation { get; protected set; }

                /// <summary>
                /// 响应方
                /// </summary>
                public AddressContext ResponseStation { get; protected set; }

                /// <summary>
                /// 交互策略
                /// </summary>
                public InteractiveStrategy InteractiveCategory { get; protected set; }

                /// <summary>
                /// 交互状态
                /// </summary>
                public InteractiveState InteractiveState { get; protected set; }

                /// <summary>
                /// Requests this instance.
                /// </summary>
                public abstract void Request();

                /// <summary>
                /// Responses this instance.
                /// </summary>
                public abstract void Response();

                /// <summary>
                /// Successes this instance.
                /// </summary>
                public abstract void Success();

                /// <summary>
                /// Fails this instance.
                /// </summary>
                public abstract void Fail();

                /// <summary>
                /// Retries this instance.
                /// </summary>
                public abstract void Retry();
        }
}
